/**
 * AttributeExpansion接口定义了管理属性扩展的功能
 * 它允许通过属性名获取、设置和移除属性值，以便在不同场景下灵活地扩展对象的功能或信息
 * @author JMS
 * @version 1.0
 * @since 2025-01-03
 */
package com.jms.framework.attri;

public interface AttributeExpansion {
    /**
     * 根据属性名获取对应的属性值
     *
     * @param attributeName 属性名，用于标识所需的属性
     * @return 属性值如果找到，否则返回null
     */
    String getAttribute(String attributeName);

    /**
     * 设置或更新一个属性
     * 如果属性已存在，则更新其值；否则，添加新的属性
     *
     * @param attributeName 属性名，用于标识要设置的属性
     * @param attributeValue 属性的新值
     */
    void setAttribute(String attributeName, String attributeValue);

    /**
     * 根据属性名移除属性
     * 如果属性不存在，此方法不执行任何操作
     *
     * @param attributeName 要移除的属性的名称
     */
    void removeAttributeValue(String attributeName);
}
